package pl.smath.worksheet.results;

import pl.smath.expression.Term;


/**
 * Klasa ta zawiera pojedynczy element rozwiązania zadania, a więc 
 * drzewo AST oraz opis operacji jaka została wykonana, aby dojść
 * do tego elementu z poprzedniego stanu zadania. 
 * 
 * @author Piotr Mech
 *
 */

public class OneStep {

	// aktualne drzewo AST
	private Term rootTerm;
	// opis przekształcenia, które doprowadziło do tego drzewa.
	private String description; 
	
	/**
	 * Konstruktor
	 * @param root
	 * @param description
	 */
	public OneStep(Term rootTerm, String description){
		
		this.rootTerm = rootTerm;
		this.description = description;
	}
	
	/**
	 * Zwraca drzewo AST
	 * @return rootNode
	 */
	public Term getTerm(){
		
		return rootTerm;
	}

	/**
	 * Zwraca opis tego przekształcenia
	 * @return description
	 */
	public String getDescription(){
		
		return description;
	}

	/**
	 * Podstawowa serializacja do tekstu o postaci:
	 * WYRAŻENIE		//OPIS
	 * 3*x=5			//przenieśliśmy wolny wyraz.  
	 */
	public String toString(){
		
		String serialized = "";
		serialized = rootTerm.toString() + "    //" + description;
		
		return serialized;
	}
	
	/**
	 * Funkcja tworząca kopię tego obiektu.
	 * @return OneStep
	 */
	public OneStep Copy(){
		OneStep copy = new OneStep(this.rootTerm, this.description); 
		return copy;
	}
}
